package god;

public class J17StringMath {
	
	public static void main(String[] args) {
		
		// String
		// 리터럴로 문자열 객체를 만들 때 동일한 값이 존재하면 그 값을 사용
		// String 리터럴
		String a = "Hello";
		String b = "Java";
		String c = "Hello";
		
		// 이미 있는 값이 있나 확인 후 있으면 그 값을 사용하고, 없으면 생성
		System.out.println(System.identityHashCode(a));
		System.out.println(System.identityHashCode(b));
		System.out.println(System.identityHashCode(c));
		
		// new 연산자로 생성하면 항상 생성
		String d = new String("Hello");
		String e = new String("Java");
		String f = new String("Java");
		
		System.out.println(System.identityHashCode(d));
		System.out.println(System.identityHashCode(e));
		System.out.println(System.identityHashCode(f));
		
		// String 주요 메서드
		String jumin = "123456-1234567";
		// 1.charAt : 지정한 위치의 문자 하나를 추출, 0부터 시작
		System.out.println(jumin.charAt(7));
		if (jumin.charAt(7) == '1')
			System.out.println("남자");
		
		// 2. subString : 지정한 위치를 기준으로 지정한 수 사이의 문자(들) 출력, 출력할 수 지정 안하면 시작 위치 부터 끝까지 출력
		System.out.println(jumin.substring(7));								// 7번째 위치부터 끝까지
		System.out.println(jumin.substring(0, 2));							// 0번째 위치 부터 끝 위치 2 (-1) 만큼 출력 (끝 위치 수 만큼 출력 한다고 생각 하면 됨)
		int youYear = Integer.parseInt(jumin.substring(0, 2));		// 문자열을 숫자로
		System.out.println(14 - youYear + 1);
		
		// 3. length : 문자열의 길이 출력
		System.out.println(jumin.length());
		
		// 4. split : 문자열을 구분자로 분리해서 배열에 저장하고 리턴
		String zipcode = "123-456 서울 광진구 자양동 321-456";
		String[] zip = zipcode.split(" ");												// 구분자 : 공백. 배열에 선언 후 넣음
		System.out.println(zip[0]);
		System.out.println(zip[1]);
		System.out.println(zip[2]);
		System.out.println(zip[3]);
		System.out.println(zip[4]);
		
		// 5. replace : 문자열 중 기존 문바열을 새로운 문자열로 바꿈
		String msg = "사랑해요, Java!";
		msg = msg.replace("Java", "HTML5");									// oldchar, newchar
		System.out.println(msg);
		
		String msgs = "사랑해요, 안녕하세요, 사랑해요";				// charSequence target, charSequence
		msgs = msgs.replace("사랑", "안녕");
		System.out.println(msgs);
		
		// 6 indexOf :
		System.out.println(jumin.indexOf('-'));								// 앞에서 부터 -의 위치
		// 7 lastIndexOf :
		System.out.println(jumin.lastIndexOf('6'));							// 맨 나중에 나온 6의 위치
		
		// Math 주요 메서드
		// 1 round : 반올림
		System.out.println(Math.round(9.1));
		System.out.println(Math.round(9.7));
		System.out.println(Math.round(-9.1));
		System.out.println(Math.round(-9.7));
		
		// 2 ceil : 올림
		System.out.println(Math.ceil(9.1));
		System.out.println(Math.ceil(9.7));
		System.out.println(Math.ceil(-9.1));
		System.out.println(Math.ceil(-9.7));
		
		// 3 floor : 내림
		System.out.println(Math.ceil(9.1));
		System.out.println(Math.ceil(9.7));
		System.out.println(Math.ceil(-9.1));
		System.out.println(Math.ceil(-9.7));
	}
}
